package com.own.business.system.user.business.service;

import com.own.business.system.user.entity.bo.SystemUserBo;
import com.own.business.system.user.entity.map.SystemUserMapVo;
import com.own.business.system.user.entity.po.SystemUser;
import com.own.business.system.user.entity.query.SystemUserQuery;
import com.own.business.system.user.entity.vo.SystemUserVo;
import com.own.component.common.base.service.BaseService;
import com.own.component.common.model.UpdateModel;

/**
 * SystemUserService
 *
 * @author chenxueli
 * @date 2021/06/24 15:46:54
 */
public interface SystemUserService extends BaseService<
        SystemUser,
        SystemUserBo,
        SystemUserVo,
        SystemUserMapVo,
        SystemUserQuery
        > {

    /**
     * 处理账号禁用
     *
     * @param id 主键id
     * @return 是否修改成功
     */
    UpdateModel<Boolean> disable(Long id);

    /**
     * 根据邮箱信息获取账号信息
     *
     * @param email 邮箱信息
     * @return 账号信息
     */
    SystemUser getUserByEmail(String email);

    /**
     * 根据手机号获取账号信息
     *
     * @param phone 手机号
     * @return 账号信息
     */
    SystemUser getUserByPhone(String phone);

    /**
     * 根据用户名称获取账号信息
     *
     * @param userName 用户名称
     * @return 账号信息
     */
    SystemUser getUserByUserName(String userName);

    /**
     * 修改密码
     *
     * @param userId      用户id
     * @param password    新密码
     * @param oldPassword 旧密码
     */
    void changePassword(Long userId, String password, String oldPassword);

    /**
     * 获取用户的注册天数
     *
     * @param userId 用户id
     * @return 注册天数
     */
    long registerDay(Long userId);

    /**
     * 获取用户的账号类型
     *
     * @param userId 用户id
     * @return 账号类型 1=普通账号 2=管理员
     */
    int getAccountTypeByUserId(Long userId);

}
